package com.bjx.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.bjx.system.domain.query.RoleMenuQuery;
import com.bjx.system.domain.query.RoleQuery;
import com.bjx.system.domain.vo.RoleMenuVO;
import com.bjx.system.domain.vo.RoleVO;

import java.util.List;

/**
 * @desc: 角色服务接口
 * @author: liushuai
 * @date: 2022/10/11
 */
public interface IRoleService {


    /**
     * 分页查询角色列表
     * @param roleQuery
     * @return: IPage<RoleVO>
     * @Author: liushuai
     * @Date: 2022/10/11
     */
    IPage<RoleVO> listRolePage(RoleQuery roleQuery);

    /**
     * 新增角色
     * @param roleVO
     * @Author: liushuai
     * @Date: 2022/10/11
     */
    void insertRole(RoleVO roleVO);
    /**
     * 修改角色
     * @param roleVO
     * @Author: liushuai
     * @Date: 2022/10/11
     */
    void updateRole(RoleVO roleVO);
    /**
     * 根据角色id删除角色
     * @param roleId
     * @return: R
     * @Author: liushuai
     * @Date:  2022/10/11
     */
    void deleteRoleByRoleId(Long roleId);
    /**
     * 根据角色id查询角色
     * @param roleId
     * @return: R<RoleVO>
     * @Author: liushuai
     * @Date: 2022/10/11
     */
    RoleVO selectRoleByRoleId(Long roleId);
    /**
     * 根据角色Id查询角色权限关联
     * @param roleId
     * @return: com.bjx.common.core.domain.R<com.bjx.system.domain.vo.RoleMenuVO>
     * @Author: liushuai
     * @Date: 2022/10/14 21:59
     */
    RoleMenuVO selectRoleMenuVOByRoleId(Long roleId);

    /**
     * 保存角色与菜单关联
     * @param roleMenuQuery
     * @Author: liushuai
     * @Date: 2022/10/14 22:58
     */
    void saveRoleMenu(RoleMenuQuery roleMenuQuery);

    /**
     * 查询所有的角色
     * @param
     * @return: java.util.List<com.bjx.system.domain.vo.RoleVO>
     * @Author: liushuai
     * @Date: 2022/10/17 17:00
     */
    List<RoleVO> listRoleAll();
}
